
/**
 * Grate destruction script.
 * Sets a grate texture on the line according to grateSize, or removes it entirely.
 * Also unsets blocking flags.
 * lineId: the line to affect.
 * grateSize: the grating size. sizes 24, 32, 48, and 64 set corresponding broken grate textures.
 * Should be called with ACS_NamedExecuteAlways.
 */
script "Grate_Destroy" (int lineId, int grateSize);

/**
 * Prints a tutorial key on the screen.
 * tutorEnum: a tutorial type enumerant (from sqtutor.acs).
 * Should be called with ACS_NamedExecuteAlways.
 */
script "Tutorial_Key" (int tutorEnum);

/**
 * Prints a game hint on the screen.
 * Namely, a message from language enumeration GAME_HINT_X.
 * hintEnum: the value of X.
 * Should be called with ACS_NamedExecuteAlways.
 */
script "Game_Hint" (int hintEnum);

/**
 * Adds a sector tag to the "Vacuum Damage".
 * Will NOT add tag 0.
 * Should be called with ACS_NamedExecuteAlways.
 */
script "Setup_Vacuum_Damage" (int sectorTag);

/**
 * Plays the airlock sound locally and flashes the screen.
 * Should be called with ACS_NamedExecuteAlways.
 * style: 0 for cyan field. 1 for aether.
 */
script "Airlock_Field" (int style);

/**
 * Same as ClearForceField(sector), but plays a powerdown sound as well.
 * Should be called with ACS_NamedExecuteAlways.
 * sectorTag: The tag used that would normally be used with ClearForceField.
 * soundSourceTag: If nonzero, this is the tag that the "power down sound" is played from.
 *		If zero, it is played at the activating actor.
 */
script "ForceField_PowerDown" (int sectorTag, int soundSourceTag);


/**
 * ThrustThingZ plus uses downward velocity to determine force. 
 * Plays a sound as well: "world/jelly/bounce".
 * Should be called with ACS_NamedExecuteAlways.
 * maxforce: the maximum upward force to apply.
 * additiveforce: the force to add per bounce. 0 is no additional
 * _log: if nonzero, log the result force for debugging.
 */
script "Bounce_Floor" (int maxforce, int additiveforce, int _log);

/***************************************************************************/
/****                           EFFECT ZONES                            ****/
/***************************************************************************/

/**
 * Adds a zone tag as the default Effect Zone - this is what should be activated once players RESPAWN or ENTER the map.
 * Tag 0 clears this functionality.
 * Should be called with ACS_NamedExecuteAlways.
 * tag: the TID of the toggleable effects in the starting zone.
 */
script "EffectZone_Default" (int tag);

/**
 * Effect Zone Line special script.
 * When called, this checks the side of the line that activated it.
 * If front, do SET. If back, do CLEAR.
 * If this script is not activated by a player, this does nothing.
 * Should be called with ACS_NamedExecuteAlways.
 * areaTID: the area to SET/CLEAR for the activating player.
 * teleTID: if nonzero, this also will teleport the player to a thing tag as a bonus.
 */
script "EffectZone_Line" (int areaTID, int teleTID);

/**
 * Effect Zone Line Boundary special script.
 * This assumes that one "area" is on one side of the line, and another on the back.
 * When called, this checks the side of the line that activated it.
 * If front, CLEAR areaFrontTID, SET areaBackTID.
 * If back, CLEAR areaBackTID, SET areaFrontTID.
 * If this script is not activated by a player, this does nothing.
 * Should be called with ACS_NamedExecuteAlways.
 * areaFrontTID: the area TID on the front side.
 * areaBackTID: the area TID on the back side.
 */
script "EffectZone_Line_Boundary" (int areaFrontTID, int areaBackTID);

/**
 * Effect Zone Set script.
 * When called, this assumes SET, always (good for sector actions and such).
 * If this script is not activated by a player, this does nothing.
 * Should be called with ACS_NamedExecuteAlways.
 * areaTID: the area to SET for the activating player.
 */
script "EffectZone_Set" (int areaTID);


/**
 * Effect Zone Clear script.
 * When called, this assumes CLEAR, always (good for sector actions and such).
 * If this script is not activated by a player, this does nothing.
 * Should be called with ACS_NamedExecuteAlways.
 * areaTID: the area to CLEAR for the activating player.
 */
script "EffectZone_Clear" (int areaTID);

/**
 * End level intermission script for maps.
 * specialType: change behavior slightly based on value.
 *
 * INTER_SPECIAL_NONE 0
 * INTER_SPECIAL_SECRETEXIT 1
 * INTER_SPECIAL_E1END 2
 *
 * cameraTID: if > 0, this is the BASE TID to use for the intermission camera.
 *		If none is specified, the screen fades to a purple color after whiteout.
 * cameraRandomStride: the range for the other TIDs to randomly pick from in
 * 		order to pick a random camera from a set of contiguously-tagged cameras. 
 *		A value of 0 implies no randomness.
 * - The picked TID is [ cameraTID + Random(0, cameraRandomStride) ].
 */
script "Intermission_EndLevel" (int specialType, int cameraTID, int cameraRandomStride);

/***************************************************************************/
/****                            TIME ATTACK                            ****/
/***************************************************************************/

/**
 * Starts the Time Attack mode.
 * movingCameraTID: Thing id of the camera at the beginning. it also has 
 *		Thing_Activate called on it.
 * enemyTID: the id of the TimeAttackSpawners to activate.
 * cameraTID: if > 0, this is the BASE TID to use for the intermission camera.
 *		If none is specified, the screen fades to a purple color after whiteout.
 */
script "TimeAttack_Start" (int movingCameraTID, int enemyTID, int cameraTID)

/***************************************************************************/
/****                           SPECIAL STUFF                           ****/
/***************************************************************************/

/**
 * Script start for the boss meter.
 * A single tagged thing shows the actor's health as a percentage.
 * Multiple tagged things show the amount of things still alive.
 * tid: the TID of the actors to track.
 * bossMusic: if nonzero(TRUE), set the boss music.
 */
script "BossMeter_Start" (int tid, int bossMusic)

/**
 * Ends the boss meter.
 * noSetMusic: if nonzero (TRUE), do not reset the music to the map music.
 */
script "BossMeter_End" (int noSetMusic)

/***************************************************************************/
/****                                 V.O.                              ****/
/***************************************************************************/

/**
 * Plays a Voice over clip, captioned on-screen.
 * The clip is played from language definitions, where X is the ID, Y is a sequence number: 
 * VOCLIP_X_NAME - Sndinfo name.
 * VOCLIP_X_SUBTITLE_COUNT - The amount of lines in total for the clip.
 * VOCLIP_X_SUBTITLE_Y - The subtitle line to print.
 * VOCLIP_X_SUBTITLE_Y_TICS - The length in tics to display the line for before moving to the next.
 * clipId: X in the above definitions.
 */
script "VO_PlayClip" (int clipId);
